//
//  Header.h
//  esfaceid
//
//  Created by es on 2021/12/10.
//

#ifndef EsFaceIDDbManager_h
#define EsFaceIDDbManager_h

#import <sqlite3.h>
#import "EsFeature.h"

/**
 * 人脸数据库管理类
 */
@interface EsFaceIDDbManager : NSObject
/**
 * 数据库地址
 */
@property  (nonatomic, copy) NSString* databasePath;
/**
 * 获取实例
 */
+(EsFaceIDDbManager*) getSharedInstance;
/**
 * 创建数据库
 * @return YES: 成功，NO：失败
 */
-(BOOL)createDB;
/**
 * 根据dbName获取所有人脸数据
 *
 * @param dbName 数据库名称
 * @return 数据库中特征数据列表
 */
-(NSArray<EsFeature *> *)getFeatureByDbName:(NSString*)dbName;
/**
 * 根据dbName和用户id获取这个用户的数据
 *
 * @param dbName 数据库名称
 * @param persionID 离线人脸实人ID
 * @return 特征数据
 */
-(NSArray<EsFeature *> *)findByDbName:(NSString *)dbName persionID:(NSString *)persionID;
/**
 * 插入人脸特征数据
 *
 * @param feature 人脸特征数据
 * @return YES: 执行成功，NO：执行失败
 */
-(BOOL)insertFeature:(EsFeature *) feature;
/**
 * 删除人脸数据
 * 
 * @param feature 人脸特征数据
 * @return YES: 执行成功，NO：执行失败
 */
-(BOOL)deleteFeature:(EsFeature *) feature;
/**
 * 更新人脸数据
 *
 * @param feature 人脸特征数据
 * @return YES: 执行成功，NO：执行失败
 */
-(BOOL)updateFeature:(EsFeature *) feature;
/**
 * 删除数据库
 *
 * @param DbName 数据库名称
 * @return YES: 执行成功，NO：执行失败
 */
-(BOOL)deleteByDbName:(NSString *) DbName;
/**
 * 查询数据库中前limit条数据
 *
 * @param dbName 数据库名称
 * @param limit 一次最大返回数据个数
 * @return 离线人脸数据
 */
-(NSArray<NSString *> *)listPersonIdByDbName:(NSString *) dbName limit:(NSString*) limit;
/**
 * 获取所有数据库名称
 * 
 * @return 数据库名称数组
 */
-(NSArray<NSString *> *)listDbName;

@end

#endif /* Header_h */
